home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / compute / 1989_02 / spin.bas < prev    next >
BASIC Source File  |  1988-11-22  |  15KB  |  334 lines

  1. 1 'SPIN 'N' PRINT - By John Klein (256 character version)
  2. 10 SCREEN 0: WIDTH 80: COLOR 7, 0, 0: CLS : KEY OFF: HALT = 0: DIR = 0
  3. 20 COLOR 12: PRINT TAB(35); "Spin 'n' Print"
  4. 30 COLOR 7: LOCATE 4, 1: PRINT "Enter drive name containing text file (default=A:) >"; : COLOR 11: INPUT "", A$: LOCATE 5, 1: PRINT SPACE$(70)
  5. 35 IF A$ = CHR$(27) THEN 370
  6. 40 IF A$ = "" THEN A$ = "A:" ELSE IF LEN(A$) <> 2 OR RIGHT$(A$, 1) <> ":" THEN LOCATE 5, 1: PRINT "ERROR: illegal drive name, try A:,B:, or C:": GOTO 30
  7. 50 LOCATE 6, 1: PRINT SPACE$(79): COLOR 7: LOCATE 6, 1: PRINT "Enter text filename (D=Directory) >"; : COLOR 11: INPUT "", IN$: LOCATE 7, 1: PRINT SPACE$(79)
  8. 55 IF IN$ = "" THEN 50
  9. 56 IF IN$ = CHR$(27) THEN 30
  10. 60 IF IN$ = "D" OR IN$ = "d" THEN 3230 ELSE IN$ = A$ + IN$
  11. 70 ON ERROR GOTO 3110: OPEN "I", 1, IN$: ON ERROR GOTO 3180
  12. 80 WS = 7: TS = 6
  13. 90 COLOR 2: LOCATE 15, 16: PRINT "CPI = Characters Per Inch   CPP = Characters Per Page"; TAB(16); "LPI = Lines Per Inch"; SPC(8); "LPP = Lines Per Page"
  14. 100 COLOR 15: LOCATE 22, 26: PRINT "Press (Enter) to Begin Printing"
  15. 110 COLOR 10: LOCATE 10, 22: PRINT USING "CPI ##.##    ###.# CPP   (Right) (Left)"; 72 / WS; 792 / WS: LOCATE 11, 22: PRINT USING "LPI ##.##    ###.# LPP     (Up) (Down)"; TS; INT(960 / -(INT(-14 * 8.571 / TS)))
  16. 120 A$ = INKEY$: IF LEN(A$) = 2 THEN A$ = RIGHT$(A$, 1): WS = WS + (A$ = "M" AND WS > 3) - (A$ = "K" AND WS < 72): TS = TS - (A$ = "H" AND TS < 15) + (A$ = "P" AND TS > 1): GOTO 110 ELSE IF A$ <> CHR$(13) THEN 120
  17. 130 COLOR 15: LOCATE 22, 14: PRINT "Get Printer Ready - Press any key when ready to print": A$ = INPUT$(1): ON ERROR GOTO 3180
  18. 140 IF WS = 7 AND TS = 6 THEN DEFAULT = -1
  19. 150 WS = .114286 * WS: HORZ = -INT(-INT(WS * 125) / 100)
  20. 160 TS = 8.571 / TS: VERT = INT(960 / -(INT(-TS * 14)))
  21. 170 SCREEN 1: GOSUB 3130: WIDTH "LPT1:", 255
  22. 180 DIM L$(255), A$(125): FOR Z = 0 TO 255: READ L$(Z): NEXT Z
  23. 190 DIM LCHR$(255, 11): FOR Z = 0 TO HORZ - 1: LCHR$(0, Z) = STRING$(-INT(-TS * 14), 0): LCHR$(32, Z) = LCHR$(0, Z): NEXT Z
  24. 200 FOR Z = 1 TO VERT: A$(Z) = ""
  25. 210 IF NOT (EOF(1)) THEN LINE INPUT #1, A$(Z)
  26. 220 NEXT Z: Z1 = 1
  27. 230 FOR Z2 = 1 TO VERT: IF LEN(A$(Z2)) >= Z1 THEN 250
  28. 240 NEXT Z2: GOTO 340
  29. 250 FOR Z2 = 1 TO HORZ: LPRINT CHR$(27) + CHR$(76) + CHR$(192) + CHR$(3) + STRING$(960 - VERT * -INT(-TS * 14), 0); : GRAPH = 0
  30. 260 FOR Z3 = VERT TO 1 STEP -1
  31. 270 ESC$ = INKEY$: IF ESC$ = CHR$(27) THEN GOSUB 3150
  32. 280 IF Z1 > LEN(A$(Z3)) THEN Z = 0 ELSE Z = ASC(MID$(A$(Z3), Z1, 1))
  33. 290 IF Z > 128 THEN GRAPH = -1
  34. 300 IF L$(Z) <> "" THEN GOSUB 2950
  35. 310 LPRINT LCHR$(Z, Z2 - 1); : NEXT Z3: IF DEFAULT AND NOT (GRAPH) THEN LPRINT CHR$(27) + CHR$(49): GOTO 330 ELSE IF Z2 = HORZ THEN GOSUB 380 ELSE LPRINT CHR$(27) + CHR$(49)
  36. 320 NEXT Z2
  37. 330 Z1 = Z1 + 1: IF NOT (HALT) THEN 230 ELSE 350
  38. 340 IF NOT (EOF(1)) THEN LPRINT CHR$(12): IF NOT (HALT) THEN 200
  39. 350 SCREEN 0: WIDTH 80: COLOR 7: PRINT "Do you wish to print another text file sideways (Y/N)?"
  40. 360 WHILE INKEY$ <> "": WEND: A$ = INPUT$(1): IF A$ = "Y" OR A$ = "y" THEN CLOSE : CLEAR : RESTORE: RUN ELSE IF A$ <> "N" AND A$ <> "n" THEN 360
  41. 370 END
  42. 380 IF WS * 1.25 - HORZ + 1 = 0 THEN LPRINT CHR$(27) + CHR$(74) + CHR$(1) ELSE LPRINT CHR$(27) + CHR$(65) + CHR$(7 * (WS * 1.25 - HORZ + 1)) + CHR$(27) + CHR$(50): RETURN
  43. 390 DATA BD1: ' nul
  44. 400 DATA BD2D4F2R2E2U4H2L2G2BR2BD1Z0BR2Z0BD2G1H1: ' happy
  45. 410 DATA BD2D4F2R2E2U4H2L2G2BR2BD1Z0BR2Z0BD3H1G1: ' sad
  46. 420 DATA BD4D1F3E3U1H1L1G1H1L1G1: ' heart
  47. 430 DATA BD5F3E3H3G3: ' diamond
  48. 440 DATA BR3BD7F1L2E1BU2F1R1E1U1H1L1E1H1L2G1F1L1G1D1F1R1E1: ' club
  49. 450 DATA BR3BD1F3D1G1L1H1G1L1H1U1E3BD6F1L2E1: ' spade
  50. 460 DATA BD1: ' beep
  51. 470 DATA BD2R6D6L6U6BF3Z0: ' bs
  52. 480 DATA BD1: ' tab
  53. 490 DATA BD1: ' lf
  54. 500 DATA BD1: ' home
  55. 510 DATA BD1: ' ff
  56. 520 DATA BD1: ' return
  57. 530 DATA BR2D7H1G1F1E1U7R4D2L4R4D4H1G1F1E1: ' note
  58. 540 DATA BD4R1F1G1E1F1D1U1E1F1H1E1R1L1H1E1G1H1U1D1G1H1F1H1F1G1: ' star
  59. 550 DATA BD2BR1F3G3U6: ' r-arrow
  60. 560 DATA BD5BR1E3D6H3: ' l-arrow
  61. 570 DATA BR3BD2L2E2F2L2D4L2F2E2L2: ' d-arrow
  62. 580 DATA BR1D6BD2Z0BR4Z0BU2U6: ' !!
  63. 590 DATA BR2G2F2U4D8BR2U8L2R4: ' parg
  64. 600 DATA BR5BD1H1L2G1D3E2F2G2H2BR4D3G1L2H1: ' mark
  65. 610 DATA BD8R6U2L6D2BE1P0: ' syn
  66. 620 DATA BR3BD2L2E2F2L2D4L2F2R3L6R3E2L2: ' dd-arrow
  67. 630 DATA BR3BD2L2E2F2L2D6: ' up
  68. 640 DATA BR3D6L2F2E2L2: ' down
  69. 650 DATA BD4R4U2F2G2U2: ' right
  70. 660 DATA BD3BR2U2G2F2U2R4: ' left
  71. 670 DATA BD1: ' c-right
  72. 680 DATA BD1: ' c-left
  73. 690 DATA BD1: ' c-up
  74. 700 DATA BD1: ' c-down
  75. 710 DATA BD1: ' space
  76. 720 DATA BR3D5BD2Z1: ' !
  77. 730 DATA BR2Z1D2U2BR3Z1D2: ' "
  78. 740 DATA BR2BD1D7BR3U7BF2L7BD3R7: ' #
  79. 750 DATA BR3D8U2BL3F1R4E1U1H1L4H1U1E1R4F1: ' $
  80. 760 DATA Z0BR6D1G6D1BR6Z1: ' %
  81. 770 DATA BD8BR6H6E2F2G4D1F1R2E2: ' &
  82. 780 DATA BR2Z1D2: ' '
  83. 790 DATA BR4G2D4F2: ' (
  84. 800 DATA BR2F2D4G2: ' )
  85. 810 DATA BD4R6L3U3D6U3E2G4E2F2H4: ' *
  86. 820 DATA BD4R6L3U3D6: ' +
  87. 830 DATA BR2BD8Z1D2: ' ,
  88. 840 DATA BD4R6: ' -
  89. 850 DATA BR2BD8Z1: ' .
  90. 860 DATA BR6BD1G6: ' /
  91. 870 DATA BD2D4F2R2E2U4H2L2G2BR5G4: ' 0
  92. 880 DATA BR3G1E1D8: ' 1
  93. 890 DATA BD2E2R2F2G6R6: ' 2
  94. 900 DATA BD2E2R2F2G2L1R1F2G2L2H2: ' 3
  95. 910 DATA BR5G5R6BD3BL1U8: ' 4
  96. 920 DATA R6L6D3R4F2D1G2L2H2: ' 5
  97. 930 DATA BR5L3G2D4F2R2E2U1H2L2G2: ' 6
  98. 940 DATA R6D2G4D2: ' 7
  99. 950 DATA BD2F2R2L2G2F2R2E2H2E2H2L2G2: ' 8
  100. 960 DATA BD3BR6G2L2H2U1E2R2F2D4G2L3: ' 9
  101. 970 DATA BR2BD2Z0BD4Z0: ' :
  102. 980 DATA BR2BD2Z0BD4Z1D2: ' ;
  103. 990 DATA BR5G4F4: ' <
  104. 1000 DATA BD2R6BD3L6: ' =
  105. 1010 DATA BR1F4G4: ' >
  106. 1020 DATA BD2E2R2F2G3D1BD2Z0: ' ?
  107. 1030 DATA BD7BR5L3H2U2E2R2F2D2L2U2D1H1G1F1E1: ' @
  108. 1040 DATA BD8U5E3F3D2L6R6D3: ' A
  109. 1050 DATA D8R4E2H2L4R4E2H2L4: ' B
  110. 1060 DATA BD2D4F2R2E2BU4H2L2G2: ' C
  111. 1070 DATA D8R4E2U4H2L4: ' D
  112. 1080 DATA R6L6D4R4L4D4R6: ' E
  113. 1090 DATA R6L6D4R4L4D4: ' F
  114. 1100 DATA BD2D4F2R2E2U2L3R3BU2H2L2G2: ' G
  115. 1110 DATA D8U4R6D4U8: ' H
  116. 1120 DATA BR2R2L1D8L1R2: ' I
  117. 1130 DATA BD6F2R2E2U6: ' J
  118. 1140 DATA D8U4R2E4G4R2F2D2: ' K
  119. 1150 DATA D8R6: ' L
  120. 1160 DATA D8U8F3E3D8: ' M
  121. 1170 DATA D8U8F6D2U8: ' N
  122. 1180 DATA BD2D4F2R2E2U4H2L2G2: ' O
  123. 1190 DATA D8U4R4E2H2L4: ' P
  124. 1200 DATA BD2D4F2R2H2F3H1E2U4H2L2G2: ' Q
  125. 1210 DATA D8U4R2F4H4R2E2H2L4: ' R
  126. 1220 DATA BD6F2R2E2H2L2H2E2R2F2: ' S
  127. 1230 DATA R6L3D8: ' T
  128. 1240 DATA D6F2R2E2U6: ' U
  129. 1250 DATA D5F3E3U5: ' V
  130. 1260 DATA D8E3F3U8: ' W
  131. 1270 DATA D1F6D1BL6U1E6U1: ' X
  132. 1280 DATA D1F3D4U4E3U1: ' Y
  133. 1290 DATA R6D1G6D1R6: ' Z
  134. 1300 DATA BR2R2L2D8R2: ' [
  135. 1310 DATA BD1F6: ' \
  136. 1320 DATA BR2R2D8L2: ' ]
  137. 1330 DATA BR3G2E2F2: ' ^
  138. 1340 DATA BD9BD2R9: ' _
  139. 1350 DATA BR4Z0D2: ' `
  140. 1360 DATA BD2BR6D6U2G2L2H2U2E2R2F2: ' a
  141. 1370 DATA D8U2F2R2E2U2H2L2G2: ' b
  142. 1380 DATA BD3BR6H1L3G2D2F2R3E1: ' c
  143. 1390 DATA BR6D8U2G2L2H2U2E2R2F2: ' a
  144. 1400 DATA BD5R6U1H2L2G2D2F2R3: ' e
  145. 1410 DATA BR6BD2H2G2D6U3L2R4: ' f
  146. 1420 DATA BR6BD4H2L2G2D1F2R2E2U3D7G1L4: ' g
  147. 1430 DATA D8U4E2R2F2D4: ' h
  148. 1440 DATA BR3Z0BD2D6: ' i
  149. 1450 DATA BR5Z0BD2D6G2H2: ' j
  150. 1460 DATA D8U3R2E3G3R3F1D2: ' k
  151. 1470 DATA BR3D8: ' l
  152. 1480 DATA BD2D6U4E2F1D5U4E2F1D5: ' m
  153. 1490 DATA BD2D6U4E2R2F2D4: ' n
  154. 1500 DATA BD4D2F2R2E2U2H2L2G2: ' o
  155. 1510 DATA BD2D8U6E2R2F2D2G2L2H2: ' p
  156. 1520 DATA BR6BD2D8U6H2L2G2D2F2R2E2: ' q
  157. 1530 DATA BD2D6U4E2R2F2: ' r
  158. 1540 DATA BD8BR1R4E1U1H1L4H1U1E1R4: ' s
  159. 1550 DATA BR3D8U6R2L4: ' t
  160. 1560 DATA BD2D4F2R2E2U4D6: ' u
  161. 1570 DATA BD2D3F3E3U3: ' v
  162. 1580 DATA BD2D6E3F3U6: ' w
  163. 1590 DATA BD2F6H3E3G6: 'x
  164. 1600 DATA BD2D3F2R2E2U3D7G1L4: ' y
  165. 1610 DATA BD2R6G6R6: ' z
  166. 1620 DATA BR5L1G1D2G1F1D2F1R1: ' {
  167. 1630 DATA BR3D4BD2D4: ' |
  168. 1640 DATA BR1R1F1D2F1G1D2G1L1: ' }
  169. 1650 DATA BF1E1F2E1: ' ~
  170. 1660 DATA BD5E3F3D3L6U3: ' 127
  171. 1670 DATA BD2D4F2R1D2U2R1E2BU4H2L2G2: ' C,
  172. 1680 DATA BR1Z0BR4Z0BL5BD3D3F2R2E2U3D5: ' u..
  173. 1690 DATA BR4G1BL3BD5R6U1H2L2G2D1F2R3: ' e'
  174. 1700 DATA BR3G1E1F1BR2BD2D5U2G2L2H2U1E2R2F2: ' a^
  175. 1710 DATA BR1Z0BR4Z0BR1BD3D5U2G2L2H2U1E2R2F2: ' a..
  176. 1720 DATA BR3F1BR2BD2D5U2G2L2H2U1E2R2F2: ' a`
  177. 1730 DATA BR3R1D1L1U1BR3BD3D5U2G2L2H2U1E2R2F2: ' a.
  178. 1740 DATA BD3BR6H1L3G2D2F2R1D2U2R2E1: ' c,
  179. 1750 DATA BR3F1H1G1BL2BD5R6U1H2L2G2D1F2R3: ' e^
  180. 1760 DATA BR1Z0BR4Z1BL5BD6R6U1H2L2G2D1F2R3: ' e..
  181. 1770 DATA BR3F1BL4BD5R6U1H2L2G2D1F2R3: ' e`
  182. 1780 DATA BR1Z0BR4Z0BL2BD3D5: ' i..
  183. 1790 DATA BR3G1E1F1BG1BD1D5: ' i^
  184. 1800 DATA BR3F1BG1BD1D5: ' i`
  185. 1810 DATA BR1Z0BR4Z0BL2BD2F3D3U2L6D2U3E3: ' A..
  186. 1820 DATA BR3R1D1L1U1BD2F3D3U2L6D2U3E3: ' A.
  187. 1830 DATA BR4G1BD1R3L6D3R4L4D3R6: ' E'
  188. 1840 DATA BD3E1R1F1U1D6U1G1L1H1U4BR3E1R1F1D2L3D2F1R1E1: ' ae
  189. 1850 DATA BR3G3D5U4R3U4R3BD4BL1L2D4R3: ' AE
  190. 1860 DATA BR3F1H1G1BD2R2F2D1G2L2H2U1E2: ' o^
  191. 1870 DATA BR1Z0BR4Z0BL1BD3F2D1G2L2H2U1E2R2: ' o..
  192. 1880 DATA BR3F1BD2F2D1G2L2H2U1E2R2: ' o`
  193. 1890 DATA BR3F1H1G1BG2D3F2R2E2U3D5: ' u^
  194. 1900 DATA BR2F1BL3BD2D3F2R2E2U3D5: ' u`
  195. 1910 DATA BR1Z0BR4Z0BL5BD3D2F2R2E2U2D6G1L4: ' y..
  196. 1920 DATA BR1Z0BR4Z0BL5BD4E2R2F2D2G2L2H2U2E2R2: ' O..
  197. 1930 DATA BR1Z0BR4Z0BR1BD2D4G2L2H2U4: ' U..
  198. 1940 DATA BR3BD1D7U2R2L3H1U1E1R3: ' cent
  199. 1950 DATA BR6BD2H2L1G2D2R2L3R1D3G1R5E1: ' pound
  200. 1960 DATA BR1F2E2G2D2R2L4R2D2R2L4R2D2: ' tree
  201. 1970 DATA R2F2G2L2U4D8BR5U4R1L2R2L1U1: ' Pt
  202. 1980 DATA BR5L1G1D8G1L1BU5R4: ' freq
  203. 1990 DATA BR4G1BR3BD2D5U2G2L2H2U1E2R2F2: ' a'
  204. 2000 DATA BR4G1BD2D5: ' i'
  205. 2010 DATA BR4G1BD2L1G2D1F2R2E2U1H2L1: ' o'
  206. 2020 DATA BR4G1BL3BD2D3F2R2E2U3D5: ' u'
  207. 2030 DATA BF1E1F1E1BL4BD3D5U3E2R2F2D3: ' n~
  208. 2040 DATA BF2E1F1E1BL5BD2D6U6F6U6: ' N~
  209. 2050 DATA BD2BR6D6U2G2L2H2U2E2R2F2BD6L6: ' a_
  210. 2060 DATA BD4D2F2R2E2U2H2L2G2BD6R6: ' o_
  211. 2070 DATA BR3Z0BD2D1G3F2R2E2: ' ?
  212. 2080 DATA BD9BD4U8R9: ' l-corner
  213. 2090 DATA BD5R9D8: ' r-corner
  214. 2100 DATA D4U3BR6G6BD1BR6L2E2U1H1G1: ' 1/2
  215. 2110 DATA D4U3BR6G6BD1BR6U4D2L2U1: ' 1/4
  216. 2120 DATA BR3Z0BD2D6: ' i
  217. 2130 DATA BD4E3G3F3BR3H3E3: ' <<
  218. 2140 DATA BD1F3G3BR3E3H3: ' >>
  219. 2150 DATA BH1R9R2D9D6L9L2U9U6BF2P0: ' block
  220. 2160 DATA BH1R9R2D9D6L9L2U9U6BF2P0: ' block
  221. 2170 DATA BH1R9R2D9D6L9L2U9U6BF2P0: ' block
  222. 2180 DATA BR3D9D4: ' 179
  223. 2190 DATA BD5R3U5D9D4: ' 180
  224. 2200 DATA BD4R3D2L3R3U6D9D4: ' 181
  225. 2210 DATA BD5R2U5D9D4BR2U9U4: ' 182
  226. 2220 DATA BD5R4D8BL2U8: ' 183
  227. 2230 DATA BD4R3D9U7L3: ' 184
  228. 2240 DATA BD4R2U4BR2D9D4BL2U7L2: ' 185
  229. 2250 DATA BR2D9D4BR2U9U4: ' 186
  230. 2260 DATA BD4R4D9BL2U7L2: ' 187
  231. 2270 DATA BD4R2U4BR2D6L4: ' 188
  232. 2280 DATA BD5R4U5BL2D5: ' 189
  233. 2290 DATA BD4R3U4D6L3: ' 190
  234. 2300 DATA BD5R3D8: ' 191
  235. 2310 DATA BR3D5R6: ' 192
  236. 2320 DATA BR3D5L3R9: ' 193
  237. 2330 DATA BD5R3D8U8R6: ' 194
  238. 2340 DATA BR3D5R6L6D8: ' 195
  239. 2350 DATA BD5R9: ' 196
  240. 2360 DATA BD5R9L6U5D9D4: ' 197
  241. 2370 DATA BR3D9D4U8R6BU2L6: ' 198
  242. 2380 DATA BR2D9D4BR2U8R5L5U5: ' 199
  243. 2390 DATA BR2D6R7BU2L5U4: ' 200
  244. 2400 DATA BR2BD4D9BR2U7R5BU2L7: ' 201
  245. 2410 DATA BD4R2U4BR2D4R5BD2L9: ' 202
  246. 2420 DATA BD4R9BD2L5D7BL2U7L2: ' 203
  247. 2430 DATA BR2D9D4BR2U7R5BU2L5U4: ' 204
  248. 2440 DATA BD4R9BD2L9: ' 205
  249. 2450 DATA BD4R2U4BR2D4R5BD2L5D7BL2U7L2: ' 206
  250. 2460 DATA BD4R3U4D4R6BD2L9: ' 207
  251. 2470 DATA BD5R2U5D5R2U5D5R5: ' 208
  252. 2480 DATA BD4R9BD2L6D7U7L3: ' 209
  253. 2490 DATA BD5R2D8U8R2D8U8R5: ' 210
  254. 2500 DATA BR2D5R2U5D5R5: ' 211
  255. 2510 DATA BR3D6R6BU2L6: ' 212
  256. 2520 DATA BR3BD4D9U9R6BD2L6: ' 213
  257. 2530 DATA BR2BD5D8U8R7L5D8: ' 214
  258. 2540 DATA BR2D9D4BR2U9U4BL4BD5R9: ' 215
  259. 2550 DATA BR3D9D4BL3BU7R9BU2L9: ' 216
  260. 2560 DATA BD5R3U5: ' 217
  261. 2570 DATA BR3BD5D7U7R6: ' 218
  262. 2580 DATA R9D9D4L9U9U4BF2P0: ' 219
  263. 2590 DATA BD7R9D6L9U6BF2P0: ' 223
  264. 2600 DATA D9D4R4U9U4L4BF2P0: ' 221
  265. 2610 DATA BR4R5D9D4L5U9U4BF2P0: ' 222
  266. 2620 DATA R9D6L9U6BF2P0: ' 220
  267. 2630 DATA BD4D2F2E2F2H2U2E2G2H2G2: ' alpha
  268. 2640 DATA BD1D9U3F1R3E2U1H2L4R3E2H1L3G1: ' beta
  269. 2650 DATA D9D1U9U1R6D2: ' gamma
  270. 2660 DATA BD4E2D6U6R3D6U6E1: ' pi
  271. 2670 DATA R6D1U1L6F3G3D2R5E1: ' sum
  272. 2680 DATA BD4D2F2R1E2U2H2R3L4G2: ' sigma
  273. 2690 DATA BD2D8U4F2R2E2U4D6: ' mu
  274. 2700 DATA BD2R6L3D6: ' tau
  275. 2710 DATA BR2R2L1D1R1F2D2G2L1D1R1L2R1U1L1H2U2E2R1: ' phi
  276. 2720 DATA BD4R6U1H2L2G2D2F2R2E2U1: ' theta
  277. 2730 DATA BD8R1U2H1U3E2R2F2D3G1D2R1: ' omega
  278. 2740 DATA BR2R2L2G1D1F1R3F2D1G2L3H2U1E2: ' delta
  279. 2750 DATA BD3D1F1R1E1U1E1R1F1D1G1L1H1U1H1L1G1: ' infinity
  280. 2760 DATA BR3BD1G2D2F2E2U2H2BR3G6: ' empty
  281. 2770 DATA BR4L1G2D3R2L2D2F2R1: ' 238
  282. 2780 DATA BD8U6E2R2F2D6: ' and
  283. 2790 DATA BD3R6BD2L6BD2R6: ' define
  284. 2800 DATA BR3BD1D4U2R2L4BD4R4: ' +-
  285. 2810 DATA BR1F3G3BD2R3: ' >=
  286. 2820 DATA BR4G3F3BD2L3: ' <=
  287. 2830 DATA BR6BD1H1L1G1D9D3: ' int1
  288. 2840 DATA BR3D9D3G1L1H1: ' int2
  289. 2850 DATA BR3BD1Z0BD6Z0BU3L3R6: ' div
  290. 2860 DATA BD3E1R2F1R1E1BD3G1L1H1L2G1: ' approx
  291. 2870 DATA BR2R1D1L1U1: ' degree
  292. 2880 DATA BR2R1G1U1F1U1D1L1: ' degree
  293. 2890 DATA BR3BD1Z0: ' dot
  294. 2900 DATA BD5R1F3U8R2: ' root
  295. 2910 DATA BR1D4U2E2F2D2: ' n
  296. 2920 DATA BF1E1R1F1D1G3R3: ' 2
  297. 2930 DATA BF1R3D3L3U3R3BG1P0: ' box
  298. 2940 DATA BD1: ' blank
  299. 2950 GOSUB 3130: X = 10: Y = 10: PSET (X, Y), 0
  300. 2960 A$ = " " + L$(Z)
  301. 2970 FOR Z9 = 2 TO LEN(A$) STEP 2: IF MID$(A$, Z9, 1) = "B" THEN Z9 = Z9 + 1
  302. 2980 D$ = MID$(A$, Z9, 1): IF D$ <> "Z" THEN 3010
  303. 2990 Z8 = WS / 3: IF Z8 * 3 > TS THEN Z8 = TS / 3
  304. 3000 LINE (X - Z8, Y - Z8)-(X + Z8, Y + Z8), 1, BF: IF MID$(A$, Z9 + 1, 1) = "0" THEN PSET (X, Y), 1: GOTO 3050 ELSE 3050
  305. 3010 IF D$ = "P" THEN PAINT (X, Y), 1, 1
  306. 3020 X = X + ((-(INSTR("ERF", D$) <> 0) + (INSTR("HGL", D$) <> 0)) * VAL(MID$(A$, Z9 + 1, 1)) * WS)
  307. 3030 Y = Y + ((-(INSTR("GDF", D$) <> 0) + (INSTR("HUE", D$) <> 0)) * VAL(MID$(A$, Z9 + 1, 1)) * TS)
  308. 3040 IF MID$(A$, Z9 - 1, 1) = "B" THEN PSET (X, Y), 0 ELSE LINE -(X, Y), 1
  309. 3050 NEXT Z9
  310. 3060 FOR Z9 = 1 TO HORZ: LCHR$(Z, Z9 - 1) = ""
  311. 3070 FOR Z8 = 0 TO -INT(-14 * TS) - 1
  312. 3080 X = 10 + (Z9 - 1) * 8: Y = 10 + (-INT(-14 * TS) - 1) - Z8
  313. 3090 LCHR$(Z, Z9 - 1) = LCHR$(Z, Z9 - 1) + CHR$(POINT(X, Y) * 128 + POINT(X + 1, Y) * 64 + POINT(X + 2, Y) * 32 + POINT(X + 3, Y) * 16 + POINT(X + 4, Y) * 8 + POINT(X + 5, Y) * 4 + POINT(X + 6, Y) * 2 + POINT(X + 7, Y))
  314. 3100 NEXT Z8, Z9: L$(Z) = "": RETURN
  315. 3110 LOCATE 7, 1: PRINT "ERROR: file not found": RESUME 30
  316. 3120 LOCATE 1, 1: PRINT "ERROR: `"; A$; "' is an illegal drive name": PRINT "Press any key to continue": A$ = INPUT$(1): RESUME 10
  317. 3130 LINE (0, 8)-(320, 200), 0, BF: LOCATE 1, 6: IF HALT THEN PRINT "----- ONE MOMENT PLEASE -----" ELSE PRINT "  Press ESC to halt printing  ": RETURN
  318. 3140 RETURN
  319. 3150 LOCATE 1, 6: PRINT "(Q)uit or (C)ontinue printing"
  320. 3160 ESC$ = INPUT$(1): IF ESC$ = "Q" OR ESC$ = "q" THEN HALT = -1: GOSUB 3130: RETURN
  321. 3170 IF ESC$ = "C" OR ESC$ = "c" THEN GOSUB 3130: RETURN ELSE BEEP: GOTO 3160
  322. 3180 IF ERR = 5 THEN SCREEN 0: WIDTH 80: CLS : LOCATE 12, 12: PRINT "This program requires CGA or equivalent hardware.": END
  323. 3190 IF ERR <> 25 AND ERR <> 57 AND ERR <> 27 THEN SCREEN 0: WIDTH 80: PRINT "UNRECOVERABLE ERROR:  error #"; ERR, ERL: PRINT "Press any key to exit.": WHILE INKEY$ = "": WEND: END
  324. 3200 CLS : SCREEN 0: WIDTH 80: PRINT "ERROR:  Printer not ready": PRINT "(C)ontinue or (Q)uit": WHILE INKEY$ <> "": WEND
  325. 3210 A$ = INPUT$(1): IF A$ = "Q" OR A$ = "q" THEN RESUME 350 ELSE IF A$ <> "C" AND A$ <> "c" THEN 3210
  326. 3220 LOCATE 2, 1: PRINT "Setup printer and press any key when ready": A$ = INPUT$(1): SCREEN 1: CLS : RESUME
  327. 3230 CLS : ON ERROR GOTO 3120: FILES A$ + "*.*": ON ERROR GOTO 0
  328. 3240 COLOR 7: PRINT "Enter text filename >"; : COLOR 11: INPUT "", IN$
  329. 3250 CLS : COLOR 12: PRINT TAB(35); "Spin 'N' Print"
  330. 3260 COLOR 7: LOCATE 4, 1: PRINT "Drive name containing text file >"; : COLOR 11: PRINT A$
  331. 3270 COLOR 7: LOCATE 6, 1: PRINT "Text filename >"; : COLOR 11: PRINT IN$
  332. 3280 IN$ = A$ + IN$: GOTO 70
  333.  
  334.